Techniques for merging virtual and physical floor maps

ABSTRACT

Various embodiments are generally directed to techniques to merge a virtual map derived from sensors of computing devices moved about an interior of a structure with a corresponding physical map. An apparatus to merge maps includes a processor component; and a merged map generator for execution by the processor component to merge a virtual map and a physical map to generate a merged map, the virtual map comprising indications of virtual pathways through an interior of a structure based on sensors, and the physical map comprising indications of physical pathways of the interior. Other embodiments are described and claimed.

TECHNICAL FIELD

Embodiments described herein generally relate to merging a virtual mapof a floor of an interior of a structure with its physical map to enablelocation tracking therein.

BACKGROUND

Computing devices have long provided the ability to track a locationrelative to the surface of the Earth through receiving wireless signalsfrom multiple global positioning system (GPS) satellites and deriving acurrent location from the indications of timing within those signals.Further, beyond simply indicating a current set of coordinates of thatcurrent location, computing devices have long provided the ability tocorrelate a current location to maps of the surface of the Earth toprovide visual presentations of the current location on a map. Thus,users of such computing devices, whether handheld or installed withinvehicles, have long been able to view a visual presentation of wherethey are on the surface of the Earth at any given moment.

Still further, many of such maps have long included informationregarding items of interest in the vicinity of a current location,including businesses, public services, addresses, etc. Thus, users ofsuch computing devices that receive GPS signals have long been able toview indications of where to go in their current vicinity to obtain aproduct or service, find an address, etc.

Unfortunately, the availability of such functions provided by computingdevices typically ceases once the users of those devices go indoorsand/or under a structure or other formation that blocks access to GPSsignals. Depending on the thickness and/or material makeup of portionsof such structures, access to GPS signals may become intermittent ordistorted, or may be entirely cut off. As a result, users of suchcomputing devices are often forced to resort to the use of moretraditional maps mounted on walls or in posters to discern their currentlocation once indoors.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an embodiment of a map merging system.

FIGS. 2-4 each illustrate a portion of an embodiment.

FIG. 5 illustrates generation of a virtual map and corresponding pointsmap according to an embodiment.

FIG. 6 illustrates generation of a pathway map and corresponding pointsmap according to an embodiment.

FIG. 7 illustrates specification of an anchor point according to anembodiment.

FIGS. 8-9 each illustrate manipulation of a virtual map according to anembodiment.

FIGS. 10-11 each illustrate a logic flow according to an embodiment.

FIG. 12 illustrates a processing architecture according to anembodiment.

DETAILED DESCRIPTION

Various embodiments are generally directed to techniques to merge avirtual map derived from sensors of computing devices moved about aninterior of a structure with a corresponding physical map. Morespecifically, a virtual map is derived over time from measurements takenby sensors of computing devices as those computing devices are movedabout the interior (e.g., at least a portion of a floor of thestructure). A physical map is then processed to extract physical pathwaydata from other data contained therein, generating a pathway map. Thevirtual map is then manipulated in a multiple-stage procedure to alignit with the pathway map. The alignment of the virtual map to the pathwaymap is then correlated to the physical map, enabling merging of thevirtual map and the physical map to form a merged map. Following suchmerging, other information concerning items of interest indicated in thevirtual map may be incorporated into the merged map.

Depending on what features exist within the interior and what sensorsare incorporated into those computing devices, formation of the virtualmap may be based on movement correlated to compass headings and/orsensed accelerations, proximity of walls and/or other features detectedacoustically, and/or relative strengths and/or positions of emitters ofradio signals. It is envisioned that the formation of the virtual mapmay rely on combining portions of sensor data from numerous computingdevices that have been transported through various portions of theinterior over time in a manner describable as a form of “crowd-sourcing”of such sensor data. Such use of sensor data from multiple devices isenvisioned as compensating for limitations in accuracy of the sensorsincorporated into typical computing devices that may be carried by theirvarious users through portions of an interior. Statistical analysismethods may be employed in deriving the virtual map from the many piecesof sensor data to remove statistically anomalous pieces of sensor data.

It is envisioned that the physical map may be available from a server ofwhatever corporate, governmental or other entity occupies that interior.It is presumed likely that the physical map may include data concerningmore than physical pathways enabling movement through the interior, suchas locations of water fountains, fire extinguishers, defibrillators,public telephones, structural posts, etc. Thus, extraction of physicalpathway data to derive a pathway map is performed to filter out suchother pieces of information.

The aligning of the virtual map to the pathway map is performed in atleast two stages including at least one coarse stage and at least onefine stage to reduce processing demands. In such stages, an algorithm tominimize a measure of error in alignment is employed to derive analignment that is then employed in merging the physical map and thevirtual map to generate the merged map. Following generation of themerged map, the merged map may be augmented with indications of selecteditems of interest indicated in the virtual map that may have beendetected by the sensors of computing devices.

With general reference to notations and nomenclature used herein,portions of the detailed description which follows may be presented interms of program procedures executed on a computer or network ofcomputers. These procedural descriptions and representations are used bythose skilled in the art to most effectively convey the substance oftheir work to others skilled in the art. A procedure is here, andgenerally, conceived to be a self-consistent sequence of operationsleading to a desired result. These operations are those requiringphysical manipulations of physical quantities. Usually, though notnecessarily, these quantities take the form of electrical, magnetic oroptical signals capable of being stored, transferred, combined,compared, and otherwise manipulated. It proves convenient at times,principally for reasons of common usage, to refer to these signals asbits, values, elements, symbols, characters, terms, numbers, or thelike. It should be noted, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to those quantities.

Further, these manipulations are often referred to in terms, such asadding or comparing, which are commonly associated with mentaloperations performed by a human operator. However, no such capability ofa human operator is necessary, or desirable in most cases, in any of theoperations described herein that form part of one or more embodiments.Rather, these operations are machine operations. Useful machines forperforming operations of various embodiments include general purposedigital computers as selectively activated or configured by a computerprogram stored within that is written in accordance with the teachingsherein, and/or include apparatus specially constructed for the requiredpurpose. Various embodiments also relate to apparatus or systems forperforming these operations. These apparatus may be speciallyconstructed for the required purpose or may include a general purposecomputer. The required structure for a variety of these machines will beapparent from the description given.

Reference is now made to the drawings, wherein like reference numeralsare used to refer to like elements throughout. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide a thorough understanding thereof. It maybe evident, however, that the novel embodiments can be practiced withoutthese specific details. In other instances, well known structures anddevices are shown in block diagram form in order to facilitate adescription thereof. The intention is to cover all modifications,equivalents, and alternatives within the scope of the claims.

FIG. 1 is a block diagram of an embodiment of a map merging system 1000incorporating one or more of computing devices 100 a-c, a computingdevice 300 and a map server 500. Each of these computing devices may beany of a variety of types of computing device, including withoutlimitation, a desktop computer system, a data entry terminal, a laptopcomputer, a netbook computer, a tablet computer, a handheld personaldata assistant, a smartphone, a digital camera, a body-worn computingdevice incorporated into clothing, a computing device integrated into avehicle (e.g., a car, a bicycle, a wheelchair, etc.), a server, acluster of servers, a server farm, etc.

As depicted, these computing devices 100 a-c, 300 and 500 exchangesignals conveying sensor data and/or map data concerning an interior ofa structure through a network 999. However, one or more of thesecomputing devices may exchange other data entirely unrelated to astructure's interior with each other and/or with still other computingdevices (not shown) via the network 999. In various embodiments, thenetwork may be a single network possibly limited to extending within asingle building or other relatively limited area, a combination ofconnected networks possibly extending a considerable distance, and/ormay include the Internet. Thus, the network 999 may be based on any of avariety (or combination) of communications technologies by which signalsmay be exchanged, including without limitation, wired technologiesemploying electrically and/or optically conductive cabling, and wirelesstechnologies employing infrared, radio frequency or other forms ofwireless transmission.

It should be noted that although a specific quantity of three of thecomputing devices 100 a-c to collect sensory information of an interiorof a structure is depicted, such a quantity of computing devices is butan example presented herein to enable understanding. As will beexplained in greater detail, it is envisioned that larger quantities ofcomputing devices would be relied upon to collect such data in order toimprove accuracy.

In various embodiments, each of the computing devices 100 a-cincorporates one or more of a processor component 150, a storage 160,controls 120, a display 180 and an interface 190 to couple each of thecomputing devices 100 a-c to the network 999. The storage 160 stores oneor more of a control routine 140, a corresponding one of sensor data 130a-c and a merged map 338. In various embodiments, the computing device300 incorporates one or more of a processor component 350, a storage360, controls 320, a display 380 and an interface 390 to couple thecomputing device 300 to the network 999. The storage 360 stores one ormore of a control routine 340, one or more of the sensor data 130 a-c, avirtual map 331, a points map 332, an items data 333, a pathway map 335,another points map 336, a merged map 338 and physical map 530.

In each of the computing devices 100 a-c, the control routine 140incorporates a sequence of instructions operative on the processorcomponent 150 in its role as a main processor component to implementlogic to perform various functions. In executing the control routine140, the processor component 150 receives signals from one or moresensors 110 as the corresponding one of the computing devices 100 a-c ismoved through an interior of a structure and stores indications of thesensory information conveyed in those signals from the sensors 110 as acorresponding one of the sensor data 130 a-c. Thus, each of the sensordata 130 a-c represents what the sensors 110 of each of the computingdevices 100 a-c, respectively, detected as each was moved through atleast a portion of that interior, thereby forming a virtualrepresentation of at least one pathway through that interior. As will beexplained in greater detail, the exact nature of the sensory informationdepends on the type and degree of accuracy of the one or more sensors110. At various intervals and/or upon being signaled by the computingdevice 300, the processor component 150 of each of the computing devices100 a-c transmits its corresponding one of the sensor data 130 a-c tothe computing device 300 via the network 999.

The control routine 340 incorporates a sequence of instructionsoperative on the processor component 350 in its role as a main processorcomponent of the computing device 300 to implement logic to performvarious functions. In executing the control routine 340, the processorcomponent 350 receives the sensor data 130 a-c from the correspondingones of the computing devices 100 a-c and generates the virtual map 331therefrom. As familiar to those skilled in the art, any of a variety ofalgorithms may be employed to so generate the virtual map 331 from thesensor data 130 a-c, and the exact manner in which this is done isbeyond the scope of this application.

In executing the control routine 340, the processor component 350 alsoreceives the physical map 530 from the map server 500 and extractsphysical pathway data therefrom to generate the pathway map 335. Again,it is envisioned that the physical map 530 is a map of the physicalarrangement of at least a portion of a floor of the interior of thestructure indicating the locations of physical pathways enablingmovement therethrough, and possible items of interest therein. Asfamiliar to those skilled in the art, there is no one type of datastructure that has become prevalent or a “de facto” standard for theorganization or storage of data representing a map, and no prevalent orde facto standard for the manner in which information concerningpathways and/or indications of items of interest are incorporated intothat data. Therefore, it is envisioned that the control routine 340incorporates one or more algorithms to extract at least data indicatingphysical pathways from the physical map 530 while accommodating any of avariety of types of data structures by which the data of the physicalmap 530 may be organized or stored. The extracted indications ofphysical pathways are stored as the pathway map 335.

In executing the control routine 340, the processor component 350further manipulates the virtual map 331 in various ways relative to thepathway map 335 to align the virtual pathways of the virtual map 331 tothe physical pathways of the pathway map 335. Again, this alignment isperformed in multiple stages. At least one “coarser” stage is performedin which the virtual map is rotated and/or proportionally resizedrelative to the pathway map 335 in relatively larger (e.g., “coarser”)increments of degrees of rotation and/or percentages of resealing tobegin to align the virtual map 331 with the pathway map 335. Then, atleast one “finer” stage is performed in which the virtual map is rotatedand/or proportionally resealed relative to the pathway map 335 inrelatively smaller (e.g., “finer”) increments. Such an approach of atleast one coarser stage followed by at least one finer stage enablesalignment to be performed in less time in a manner that is lessdemanding on the processor component 350 than what may be termed a“naive” approach of trying only a full range of finer increments. Inperforming both the coarser and finer stages, a measure of a degree oferror for each increment tried at each stage is employed to determinewhen the best alignment possible has been achieved at each stage.

In executing the control routine 340, the processor component 350 stillfurther employs the alignment achieved between the virtual map 331 andthe pathway map 335 to guide the merging of the virtual map 331 and thephysical map 350 to generate the merged map 338. Stated differently,given that the pathway map 335 is derived from the virtual map 350, theachievement of an alignment between the virtual map 331 and the pathwaymap 335 can be correlated to aligning the virtual map 331 to thephysical map 530. The resulting merged map 338 thus incorporates all ofthe detail of the physical map 530 able to be viewed by users ofcomputing devices with the indications of virtual pathways of thevirtual map 331 able to be employed by those computing devices todetermine their current location relative to the positions of possibleitems of interest originally indicated in the physical map 530.

As has been discussed, it may be deemed desirable to augment the mergedmap 339 with indications of the locations of various items of interestdetected by the sensors 110 of the computing devices 100 a-c. Therefore,during the generation of the virtual map 331, data concerning locationsof items of interest from one or more of the sensor data 110 a-c may becollected and stored as the items data 333. Then, following generationof the merged map 338, indications of the items of interest of the itemsdata 333 may then be added to the merged map 338. Following generationof the merged map 338, either with or without such augmentation withindications of locations of items of interest, the processor component350 transmits the merged map 339 to one or more of the computing devices100 a-c.

Returning to the computing devices 100 a-c, in executing the controlroutine 140, the processor component 150 of one or more of the computingdevices 100 a-c receives the merged map 338 and visually presents atleast a portion of it on the display 180. The sensors 110 are employedto determine the current location of respective ones of the computingdevices 100 a-c on the merged map 338 by correlating current sensoryinformation to the data of the merged map 338 associated with thevirtual map 331 that was generated from such sensor data. Where themerged map 338 incorporates indications of items of interest, ones ofthose items that are at least in the vicinity of the current locationmay also be visually presented on the display 180.

The processor element 150 may further monitor the controls 120 toreceive signals indicative of manual operation of the controls 120 by auser of one or more of the computing devices 100 a-c providinginformation concerning items of interest. This may occur during eitheror both of collecting sensory information from which the virtual map 331(and ultimately the merged map 338) is generated, and collecting sensoryinformation to determine a current location on the merged map 338. Thus,such information may be incorporated into one or more of the sensor data130 a-c provided to the computing device 300 or incorporated into themerged map 338, which may then be relayed back to the computing device300 to augment the copy of the merged map 338 stored in the storage 360.

In various embodiments, each of the processor components 150 and 350 mayinclude any of a wide variety of commercially available processors.Further, one or more of these processor components may include multipleprocessors, a multi-threaded processor, a multi-core processor (whetherthe multiple cores coexist on the same or separate dies), and/or amulti-processor architecture of some other variety by which multiplephysically separate processors are in some way linked.

In various embodiments, each of the storages 160 and 360 may be based onany of a wide variety of information storage technologies, possiblyincluding volatile technologies requiring the uninterrupted provision ofelectric power, and possibly including technologies entailing the use ofmachine-readable storage media that may or may not be removable. Thus,each of these storages may include any of a wide variety of types (orcombination of types) of storage device, including without limitation,read-only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM),Double-Data-Rate DRAM (DDR-DRAM), synchronous DRAM (SDRAM), static RAM(SRAM), programmable ROM (PROM), erasable programmable ROM (EPROM),electrically erasable programmable ROM (EEPROM), flash memory, polymermemory (e.g., ferroelectric polymer memory), ovonic memory, phase changeor ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS)memory, magnetic or optical cards, one or more individual ferromagneticdisk drives, or a plurality of storage devices organized into one ormore arrays (e.g., multiple ferromagnetic disk drives organized into aRedundant Array of Independent Disks array, or RAID array). It should benoted that although each of these storages is depicted as a singleblock, one or more of these may include multiple storage devices thatmay be based on differing storage technologies. Thus, for example, oneor more of each of these depicted storages may represent a combinationof an optical drive or flash memory card reader by which programs and/ordata may be stored and conveyed on some form of machine-readable storagemedia, a ferromagnetic disk drive to store programs and/or data locallyfor a relatively extended period, and one or more volatile solid statememory devices enabling relatively quick access to programs and/or data(e.g., SRAM or DRAM). It should also be noted that each of thesestorages may be made up of multiple storage components based onidentical storage technology, but which may be maintained separately asa result of specialization in use (e.g., some DRAM devices employed as amain storage while other DRAM devices employed as a distinct framebuffer of a graphics controller).

In various embodiments, each of the interfaces 190 and 390 may employany of a wide variety of signaling technologies enabling computingdevices to be coupled to other devices as has been described. Each ofthese interfaces may include circuitry providing at least some of therequisite functionality to enable such coupling. However, each of theseinterfaces may also be at least partially implemented with sequences ofinstructions executed by corresponding ones of the processor components(e.g., to implement a protocol stack or other features). Whereelectrically and/or optically conductive cabling is employed, theseinterfaces may employ signaling and/or protocols conforming to any of avariety of industry standards, including without limitation, RS-232C,RS-422, USB, Ethernet (IEEE-802.3) or IEEE-1394. Where the use ofwireless signal transmission is entailed, these interfaces may employsignaling and/or protocols conforming to any of a variety of industrystandards, including without limitation, IEEE 802.11a, 802.11b, 802.11g,802.16, 802.20 (commonly referred to as “Mobile Broadband WirelessAccess”); Bluetooth; ZigBee; or a cellular radiotelephone service suchas GSM with General Packet Radio Service (GSM/GPRS), CDMA/1xRTT,Enhanced Data Rates for Global Evolution (EDGE), Evolution DataOnly/Optimized (EV-DO), Evolution For Data and Voice (EV-DV), High SpeedDownlink Packet Access (HSDPA), High Speed Uplink Packet Access (HSUPA),4G LTE, etc.

FIGS. 2, 3 and 4 are each a simplified block diagram of a portion of anembodiment of the map merging system 1000 of FIG. 1. Each of thesefigures depicts aspects of the operation of the merging of the virtualmap 331 and the physical map 530 at different phases. More specifically,FIG. 2 depicts aspects of the collecting of the sensor data 130 a by thecomputing device 100 a in preparation for deriving the virtual map 331.FIG. 3 depicts aspects of generation of the virtual map 331 from thesensor data 130 a-c, the generation of the pathway map 335 from thephysical map 530, and the merging of maps to generate the merged map 338by the computing device 300. FIG. 4 depicts aspects of the visualpresentation of at least a portion of the merged map 338 and of acurrent location thereon by the computing device 100 a.

In various embodiments, each of the control routines 140 and 340 mayinclude one or more of an operating system, device drivers and/orapplication-level routines (e.g., so-called “software suites” providedon disc media, “applets” obtained from a remote server, etc.). Where anoperating system is included, the operating system may be any of avariety of available operating systems appropriate for whatevercorresponding ones of the processor components 150 or 350. Where one ormore device drivers are included, those device drivers may providesupport for any of a variety of other components, whether hardware orsoftware components, of corresponding ones of the computer systems 100or 300.

Each of the control routines 140 and 340 may include or be otherwiselinked to communications components 149 and 349 executable by theprocessor components 150 and 350 to operate the interfaces 190 and 390,respectively, to transmit and receive signals via the network 999 as hasbeen described. Among the signals received may be signals conveying thesensor data 100 a-c, the physical map 530 and/or the merged map 338among one or more of the computing devices 100 a-c and/or 300 via thenetwork 999. As familiar to those skilled in the art, each of thesecommunications components is selected to be operable with whatever typeof interface technology is selected to implement corresponding ones ofthe interfaces 190 and 390.

Turning more specifically to FIG. 2, a collection component 141 of thecontrol routine 140 receives signals conveying at least sensoryinformation from one or more of sensors 110, storing it as the sensordata 130 a, and transmitting it to the computing device 300. Asdepicted, the sensors 110 may include one or more of a wide variety oftypes of sensors, including and not limited to one or more of a compass111, an accelerometer 112, a gyroscope 113, and a microphone 115possibly paired with a speaker 114. Further, where the interface 190incorporates the ability to communicate wirelessly, the interface 190may be employed as a sensor in addition to being employed in wirelesscommunications. Signals may also be received from the controls 120indicating manual input of further information about a current locationof the computing device 100 a by its user.

The collection component 141 at least partially derives a virtualpathway along which the computing device 100 a is moved through aninterior of a structure from the sensory information received from thesensors 110, and stores an indication of that virtual pathway as thesensor data 130 a. The exact nature of what is indicated in the sensordata 130 a is at least partially dependent on what types of sensors areincluded as part of the sensors 110 in various possible embodiments. Byway of example, where one or more of the compass 111, the accelerometer112 and the gyroscope 113 are included in the sensors 110, the sensordata 130 a is likely to indicate a virtual pathway referenced to compassheadings and/or otherwise providing relatively precise determinations ofdegrees of angles turned at points where the direction of the virtualpathway changes. By way of another example, where the interface 190 isemployed as a sensor and is able to detect the direction and/or relativestrength of a signal from a wireless access point and/or other wirelessdevice in the interior, the sensor data 130 a is likely to indicate thevirtual pathway as relative distances and/or directions along its lengthfrom that detected signal. By way of still another example, where themicrophone 115 and the speaker 114 are employed together to perform echolocation, the sensor data 130 a is likely to indicate the virtualpathway as relative distances from one or more walls of the interior,essentially indicating portions of the virtual pathway that extendrelatively parallel to a wall and/or that extend away from a wall.Further, the collection component 141 may also accept manually providedinput of a user from manual operation of the controls 120 (e.g., akeyboard, a touchscreen, a rollerball pointing device, a stylus, etc.)by which the user may indicate an observed distance and/or directionfrom a structural feature of the interior (e.g., a wall, a corner, apost, etc.).

As familiar to those skilled in the art, the degree of accuracy of whatis indicated in the sensor data 130 a necessarily depends on theaccuracy of whatever sensors are part of the sensors 110, and how muchvariety in the types of sensors are part of the sensors 110. Stateddifferently, the greater the variety of types of sensors from whichsensory information may be collected as the computing device 100 a ismoved about an interior, the more complete the resulting perception ofthe interior may be, and the more accurate the derivation of a virtualpathway from that information may be. It is envisioned that typicalcomputing devices that are moved about by their users in typicalsituations may have sensors of somewhat limited accuracy and variety.This arises from a presumption that most consumer varieties of computingdevices may be designed to provide indications of a compass heading,closeness of a wireless access point, etc. as a convenience feature forusers who may be unlikely to require a high degree of accuracy in suchconvenience features. Thus, metallic components of a structure maydistort magnetic and/or radio field detection, acoustic treatments toquiet an interior may distort the use of echo location to detect anearby wall, etc., and whatever types of sensors are included in thesensors 110 are envisioned as being unlikely to be designed tocompensate for such difficulties.

Turning more specifically to FIG. 3, a virtual map generator 341 of thecontrol routine 340 combines the virtual pathways indicated in each ofthe sensor data 130 a-c into the single virtual map 331. As has beendiscussed, it is envisioned as likely that the indications of virtualpathways provided in any one of the sensor data 130 a-c may be accurateto only a limited degree as it is envisioned that the sensors employedare likely to be of limited accuracy. Thus, it is envisioned that thevirtual map generator 341 is to accept sensor data from a number ofcomputing devices (again, a quantity of three computing devices 100 a-care depicted herein as a simplified example for purposes ofillustration). Stated differently, it is envisioned that so-called“crowd-sourcing” is employed to provide numerous samples of sensor dataas an input to the virtual map generator 341 to enable the generation ofprogressively more accurate incarnations of the virtual map 331 overtime. A points map generator 342 of the control routine 340 parses thevirtual pathways indicated in the virtual map 331 to derive the pointsat which there are turns and/or intersections at which segments of thosevirtual pathways meet. The points map generator 342 then storesindications of the relative locations of those points as the points map332.

FIG. 5 depicts an example of the generation of the virtual map 331 andthe points map 332 by the virtual map generator 341 and the points mapgenerator 342, respectively. It should be noted that FIG. 5 depicts asomewhat simplified view of the indications of the segments 1301 ofvirtual pathways in each of the sensor data 130 a-c. In particular, itis envisioned that the segments 1301 of those virtual pathways may beunlikely to be indicated as being quite as straight and meeting at suchclearly defined rectilinear angles as depicted. This relativelysimplistic depiction is provided herein to facilitate understanding. Asdepicted, the virtual pathways indicated in each of the sensor data 130a-c are combined to form the virtual map 331 by the virtual mapgenerator 341. The points map 332 is then generated from the virtual map331 by the points map generator 342. The points map 332 incorporatesindications of relative locations of points 3321 at which the segments3311 of the virtual pathways of the virtual map 331 meet at eitherintersections or where there is a turn in the virtual pathway.

Returning to FIG. 3, a pathway extractor 345 of the control routine 340parses the physical map 530 to extract indications of physical pathwaystherefrom, and stores those indications as the pathway map 335. As hasbeen discussed, it is envisioned as possible for the data of thephysical map 530 to be organized in any of a wide variety of types ofdata structure as there is currently no accepted standard for the mannerin which such data is stored. Therefore, the pathway extractor 345 mayincorporate the capability to identify the particular data structure ofthe physical map 530 from a variety of possible data structures as partof extracting indications of physical pathways therefrom. In extractingsuch indications, the pathway extractor 345 is effectively separatingindications of physical pathways from other information expected to beincluded in the physical map 530, including and not limited to,indications of room numbers and/or locations of such items as fireextinguishers, public telephones, water fountains, elevators, etc.

In such extraction, outlines defining the boundaries of physicalpathways are identified that may initially indicate locations ofobstacles such as structural posts, slight bends, tables, cabinets,instances of some degree of narrowing by a doorway, etc. As part of moreclearly identifying physical pathways, the pathway extractor 345simplifies these outlines by filling in holes of physical pathwaysand/or smoothing boundaries. Then, the pathway extractor 345 generatesindications of the physical pathways as segments that connect wherethere are intersections and/or turns in physical pathways. In so doing,the pathway extractor 345 may locate those segments generally in themiddle of the outlined physical pathways based on a tendency of manypersons to walk along the center of hallways, aisles formed among cubesand/or furnishings, etc. Then, a points map generator 346 of the controlroutine 340 parses the physical pathways indicated in the pathway map335 with segments to generate the points map 336 indicating the pointsin the physical pathways of the pathway map 335 at which there are turnsand/or intersections at which the segments of those pathways meet.

FIG. 6 depicts an example of the generation of the pathway map 335 andthe points map 336 by the pathway extractor 345 and the points mapgenerator 346, respectively. As depicted, the physical map 530 conveys agreat deal of information beyond simply indications of pathwaysconcerning at least a portion of a floor of a structure. Specifically asdepicted in this example, locations of entrances into cubes and/orrooms, floor entrances 5301, structural posts 5302, and other obstacles5305 (e.g., a table with a copy machine, an office supply cabinet, awater fountain, a table, a bookcase, water feature, etc). The pathwayextractor 345 first derives the outlines of physical pathways,effectively simplifying the physical map 530 to distinguish physicalpathways from all other items indicated in the physical map 530. Thepathway extractor 345 then simplifies the outlines of those physicalpathways, filling in “holes” in those physical pathways caused by suchitems as the posts 5302, and smoothing the outlines by removing itemssuch as the obstacles 5305. The pathway extractor 345 then redefines thephysical pathways with segments 3351, thus further simplifying theindications of those physical pathways. Again, the pathway extractor 345may employ an assumption that persons typically move along physicalpathways in the center of those physical pathways, rather than by“hugging” walls as they move. Thus, the pathway map 335 is caused toindicate the physical pathways of the physical map 530 as the segments3351 extending generally along the centers of those physical pathways.Following generation of the pathway map 335, the points map generator346 generates the points map 336 therefrom. The points map 336incorporates indications of locations of points 3361 at which thesegments 3351 of the pathway map 335 meet either at intersections orwhere there is a turn in a physical pathway.

Returning again to FIG. 3, a merged map generator 348 of the controlroutine 340 generates the merged map 338 from some or all of the virtualmap 331, the points map 332, the pathway map 335, the points map 336 andthe physical map 530. In some embodiments, an anchoring component 3482of the merged map generator 348 visually presents the virtual map 331and the physical map 530 on the display 380 along with a request to anoperator of the computing device 300 to specify an anchor point at whicha particular location of the virtual map 331 coincides with the physicalmap 530 through manual operation of the controls 320. Such an anchorpoint may be specified to coincide with an entrance of a floor depictedin the physical map 530 (e.g., one of the entrances 5301 of the exampleof FIG. 6) or other feature that the operator of the computing device300 is able to recognize. An example of specifying such an anchor pointis depicted in FIG. 7. As just described, the virtual map 331 and thephysical map 530 are visually presented to an operator, and the operatoris requested to indicate a common anchor point 3382 on each of thevirtual map 331 and the physical map 530 via the controls 320. With theanchor point 3382 so specified, the location of the anchor point 3382 onthe physical map 530 is correlated to a location on the pathway map 335.The translation component 3483 then shifts (translates) the location ofthe virtual map 331 relative to the pathway map 335 to cause thelocations of the anchor points 3382 of each to coincide such that theanchor points 3382 become a common anchor point.

Returning again to FIG. 3, presuming that such an anchor point (e.g.,the anchor point 3382) is specified, each of a translation component3483, a rotation component 3484 and a scaling component 3485 attempts tomanipulate the virtual map 331 in various ways to align the virtual map331 with the pathway map 335. It is envisioned as likely that thevirtual map 331 may need some degree of manipulation to at least adjustits scale to match that of the pathway map 335, as it is deemed unlikelyeither may have been generated to match the scale of the other. Itshould be noted that in adjusting the scale of the virtual map 331, therelative proportions of the segments of the virtual pathways of thevirtual map 331 are maintained. It is also envisioned as unlikely thatthe virtual map 331, unless generated with sensor data that may includecompass headings of pathways, may be oriented in the same rotationaldirection as the pathway map 335. Stated differently, while the physicalmap 530 may indicate a compass heading in which it is oriented (e.g., anindication of which way is magnetic North), it is quite possible thatnone of the sensor data 130 a-c may indicate a compass heading of any oftheir pathways such that the virtual map 331 may not include anindication of a compass heading for any of its virtual pathways. It isfurther envisioned as likely that, despite the provision of anindication of an anchor point at which the physical map 530 and thevirtual map 331 are supposed to coincide, the operator of the computingdevice 300 may be somewhat inaccurate in indicating that anchor pointsuch that some amount translation (i.e., shifting) of the virtual map331 relative to the pathway map 335 is necessary as part of aligningthem.

In various possible embodiments, different ones of these manipulationsof the virtual map 331 relative to the pathway map 335 may be performedin differing order. By way of example in one embodiment, the translationcomponent 3483 may first effect a translation of the virtual map 331relative to the pathway map 335 to cause the anchor points of each tocoincide. Then, the rotation component 3484 may try rotating the virtualmap 331 to different orientations relative to the pathway map 335 andabout their common anchor point until some degree of alignment (e.g.,parallelism) is achieved between at least a subset of the segments ofthe virtual map 331 (e.g., at least a subset of the segments 3311) andat least a subset of the segments of the pathway map 335 (e.g., at leasta subset of the segments 3351). Then, the scaling component may tryscaling the virtual map 331 larger and/or smaller by various degreesrelative to the pathway map 335, while maintaining their common anchorpoint, until achieving a relatively high degree of alignment (e.g.,overlap) of segments of the virtual map 331 with segments of the pathwaymap 335. Further, the translation component 3483 may try effectingfurther translation of the virtual map 331 relative to the pathway map335 following rotation and/or scaling of the virtual map 331. Suchfurther translation may be tried to deliberately cause the anchor pointsof the virtual map 331 and the pathway map 335 to cease to coincide bysome small degree to further improve alignment based on a premise thatthe operator may have specified the anchor point with only limitedprecision such that a correct alignment may require that the anchorpoints of the virtual map 331 and the pathway map 335 not coincide.

In performing the various translations, rotation and scalingmanipulations of the virtual map 331, one or more of the translationcomponent 3483, the rotation component 3484 and the scaling component3485 may perform them in at least two stages, including a coarser stageand a finer stage. In a coarser stage, the various manipulations of thevirtual map 331 are first tried with relatively larger increments of ameasure between attempted manipulations. Then, in a finer stage, one ormore of the same manipulations of the virtual map 331 are again triedwith relatively smaller increments of the measure.

By way of example, the rotation component 3484 may first try rotatingthe virtual map 331 about the anchor point in increments of fivedegrees, checking the degree of alignment after each increment todetermine which of those rotated orientations of the virtual map 331brings about the closest alignment. Then, the rotation component 3484may vary the orientation by a few degrees in each direction of rotationfrom the orientation just found to bring about the closest alignment inincrements of one degree, checking the degree of alignment after eachincrement to determine which of those rotated orientations of thevirtual map 331 brings about a still better alignment. This enables anorientation resulting in best alignment to be identified more quicklythan in the typical “naive” approach of rotating the virtual map 331about the anchor point in increments of one degree from the beginning.By employing two stages, fewer rotational orientations need be triedresulting in a best alignment being found more quickly with lesserdemand placed on the processing resources of the processor component350.

By way of another example, the scaling component 3485 may first tryscaling the virtual map to sizes larger and/or smaller than its originalsize by increments of five percent of its original size, checking thedegree of alignment after each increment to determine which of thoseresealed sizes of the virtual map 331 brings about the closestalignment. Then the scaling component 3485 may vary the scale of thevirtual map 331 by a small percentage both larger and smaller from theresealed size that brought about the closest alignment in increments ofone percent, checking the degree of alignment after each increment todetermine which of those resealed sizes of the virtual map 331 bringsabout a still better alignment.

FIG. 8 depicts an example of different rotational orientations of thevirtual map 331 being tried by the rotation component 3484, and FIG. 9depicts an example of different resealed sizes of the virtual map 331being tried. In FIG. 8, different rotational orientations of the virtualmap 331 (depicted with dotted lines) are attempted, with eachorientation that is tried being rotated incrementally by a selectednumber of degrees from a previously tried orientation. In FIG. 9, thevirtual map 331 is resealed repeatedly to try different resealed sizes(depicted with dotted lines), with each resealed size that is triedbeing larger or smaller by a selected incremental percentage from apreviously tried resealed size. In the examples in both FIGS. 8 and 9,it can be seen that the common anchor point 3382 is maintained as thevirtual map 331 is manipulated.

As each translation, orientation and/or scaling manipulation is tried,whether in coarse or fine increments, an error calculator 3486 of thecontrol routine 340 determines the degree of alignment that results. Insome embodiments, this degree of alignment may be determined as a degreeof error derived by measuring a sum of the differences of locations offeatures of the virtual map 331 from features of the pathway map 335.More specifically, following each manipulation of the virtual map 331relative to the pathway map 335, the difference in position from eachpoint 3321 of the points map 332 (which corresponds to the virtual map331) from the closest one of the points 3361 of the points map 336(which corresponds to the pathway map 335) is measured and the sum ofall of those differences is calculated to arrive at a total “error”value.

An example of one possible embodiment of such a calculation is:

E=ΣE _(i)=Σsqrt((x _(i) −p _(xi))²+(y _(i) −p _(yi))²)

in which E is the sum of all errors E_(i), where E_(i) is the errorsignifying the degree of difference in location (in two dimensions x andy) between the location (x_(i), y_(i)) of the ith point 3321 of thepoints map 332 and the location (p_(xi), p_(yi)) of the closest one ofthe points 3361 of the points map 336 to that ith point of the pointsmap 332. It is envisioned as likely that the number of segments 3311 ofthe virtual map 331 may be less than the number of segments 3351 of thepathway map 335, and thus, the number of points 3321 of the points map332 may be less than the number of points 3361 of the points map 336.Thus, this calculation is performed for the total number of points 3321on the points map 332 such that the index i iterates from “1” to thattotal number of the points 3321. Using this example calculation orothers that quantify an error term derived from a measure of differenceof features, a best rotational orientation, best scaled size and/or besttranslated position among multiple ones that are tried is the one thatbrings about the least error (e.g., the smallest difference in locationsof points between the virtual map 331 and the pathway map 335).

Once the virtual map 331 has been manipulated sufficiently that it isaligned with the pathway map 335, the aligned position of the virtualmap 331 relative to the pathway map 335 is correlated by the controlroutine 340 to the physical map 350 to enable the merging of the virtualmap 331 and the physical map 350 to generate the merged map 338. Thecontrol routine 340 then provides the merged map 338 to other computingdevices (e.g., the computing devices 100 a-c).

Turning more specifically to FIG. 4, a correlation component 143 of thecontrol routine 140 employs the merged map 338 and a current incarnationof the sensor data 130 a providing indications of a current location ofthe computing device 100 a to visually present the current location ofthe computing device 100 a on at least a portion of the merged map 338on the display 180. To do this, the correlation component comparesindications of the current position in the current incarnation of thesensor data 130 a to the indications of virtual pathways that have beenmerged into the merged map 338 to identify the current location on aphysical pathway that has also been merged into the merged map 338. Withthe merged map 338 correlating locations along those virtual pathways tolocations along the physical pathways, the merged map 338 enables avisual presentation of the current location of the computing device 100a along a physical pathway that can be visually recognized by anoperator of the computing device 100 a as resembling the currentlocation.

FIG. 10 illustrates one embodiment of a logic flow 2100. The logic flow2100 may be representative of some or all of the operations executed byone or more embodiments described herein. More specifically, the logicflow 2100 may illustrate operations performed by the processor component350 in executing at least the control routine 340, and/or performed byother component(s) of the computing device 300.

At 2110, a processor component of a computing device of a map mergingsystem (e.g., the processor component 350 of the computing device 300 ofthe map merging system 1000) is caused by execution of pathway extractorof a control routine (e.g., the control routine 340) to derive outlinesof physical pathways from a physical map of at least a portion of afloor of an interior of a structure (e.g., the physical map 530). As hasbeen discussed, it is envisioned that typical physical maps are likelyto include other information beyond depictions of physical paths,including items of interest such as locations of fire extinguishers,structural posts, etc.

At 2120, holes in the outlined physical pathways are filled to removeindications of obstacles positioned amidst portions of physical pathways(e.g., the structural posts 5302). At 2130, boundaries of the outlinedphysical pathways are smoothed to remove indications of obstacles thatintruded into physical pathways from the boundaries (e.g., the obstacles5305). The removal of indications of obstacles simplifies theindications of location and direction of the pathways.

At 2140, the physical pathways are redefined as segments, therebygenerating a pathway map that is made up of indications of the placementof those segments. At 2150, those segments may be positioned towards thecenters of the outlined physical pathways in acknowledgement of atendency of persons to move generally along the center of hallways,aisles, etc. At 2160, the processor component is caused by execution ofa points map generator of the control routine to determine locations ofpoints at which one or more of the segments of the pathway map meet, andgenerate a points map of the locations of those points.

FIG. 11 illustrates one embodiment of a logic flow 2200. The logic flow2200 may be representative of some or all of the operations executed byone or more embodiments described herein. More specifically, the logicflow 2200 may illustrate operations performed by the processor component350 in executing at least the control routine 340, and/or performed byother component(s) of the computing device 300.

At 2210, a processor component of a computing device of a map mergingsystem (e.g., the processor component 350 of the computing device 300 ofthe map merging system 1000) receives an indication of correspondinganchor points for a virtual map and a physical map (e.g., thecorresponding anchor points 3382 of the virtual map 331 and the physicalmap 530). As has been explained, an operator of the computing device maybe visually presented with the physical map and the virtual map, as wellas a request to indicate an anchor point for each at which a location onthe two maps would correspond.

At 2220, the indication of a location of an anchor point received forthe physical map is correlated to a pathway map derived by extractingindications of physical pathways from the physical map. As has beenexplained, the correlation of the anchor point of the physical map toits corresponding pathway map enables further processing to align thevirtual pathways of the virtual map to the physical pathways of thepathway map.

At 2230, the virtual map is repeatedly manipulated in one or more oftranslation, rotation and scaling in a selected coarser incrementbetween manipulations to determine a best alignment of the virtualpathways of the virtual map with the physical pathways of the pathwaymap. As has been explained, initial coarser increments of degree ofrotation, percentage of size in resealing and/or distance in translationare used in a coarser stage to find a best alignment.

At 2240, the virtual map is further repeatedly manipulated in one ormore of translation, rotation and scaling in a selected finer incrementbetween manipulations, and starting with the just determined bestalignment to determine a still better alignment of the virtual pathwayswith the physical pathways of the pathway map. As has been explained,trying various rotated orientations, resealed sized and/or translationsof the virtual map relative to the pathway map in first a coarser stagefollowed by a finer stage enables a best alignment to be determined inless time with fewer demands on the processor component.

At 2250, the alignment of the virtual map to the pathway map that wasdetermined through the manipulations with coarser and finer incrementsto be a still better alignment is correlated to the physical map toalign the virtual map to the physical map. At 2260, the virtual andphysical maps are merged using the still better alignment.

FIG. 12 illustrates an embodiment of an exemplary processingarchitecture 3000 suitable for implementing various embodiments aspreviously described. More specifically, the processing architecture3000 (or variants thereof) may be implemented as part of the computingdevice 300. It should be noted that components of the processingarchitecture 3000 are given reference numbers in which the last twodigits correspond to the last two digits of reference numbers of atleast some of the components earlier depicted and described as part ofone or more of the computing devices 100 a-c and 300. This is done as anaid to correlating components of each.

The processing architecture 3000 may include various elements commonlyemployed in digital processing, including without limitation, one ormore processors, multi-core processors, co-processors, memory units,chipsets, controllers, peripherals, interfaces, oscillators, timingdevices, video cards, audio cards, multimedia input/output (I/O)components, power supplies, etc. As used in this application, the terms“system” and “component” are intended to refer to an entity of acomputing device in which digital processing is carried out, that entitybeing hardware, a combination of hardware and software, software, orsoftware in execution, examples of which are provided by this depictedexemplary processing architecture. For example, a component can be, butis not limited to being, a process running on a processor component, theprocessor component itself, a storage device (e.g., a hard disk drive,multiple storage drives in an array, etc.) that may employ an opticaland/or magnetic storage medium, an software object, an executablesequence of instructions, a thread of execution, a program, and/or anentire computing device (e.g., an entire computer). By way ofillustration, both an application running on a server and the server canbe a component. One or more components can reside within a processand/or thread of execution, and a component can be localized on onecomputing device and/or distributed between two or more computingdevices. Further, components may be communicatively coupled to eachother by various types of communications media to coordinate operations.The coordination may involve the uni-directional or bi-directionalexchange of information. For instance, the components may communicateinformation in the form of signals communicated over the communicationsmedia. The information can be implemented as signals allocated to one ormore signal lines. A message (including a command, status, address ordata message) may be one of such signals or may be a plurality of suchsignals, and may be transmitted either serially or substantially inparallel through any of a variety of connections and/or interfaces.

As depicted, in implementing the processing architecture 3000, acomputing device may include at least a processor component 950, astorage 960, an interface 990 to other devices, and a coupling 955. Aswill be explained, depending on various aspects of a computing deviceimplementing the processing architecture 3000, including its intendeduse and/or conditions of use, such a computing device may furtherinclude additional components, such as without limitation, a displayinterface 985.

The coupling 955 may include one or more buses, point-to-pointinterconnects, transceivers, buffers, crosspoint switches, and/or otherconductors and/or logic that communicatively couples at least theprocessor component 950 to the storage 960. Coupling 955 may furthercouple the processor component 950 to one or more of the interface 990,the audio subsystem 970 and the display interface 985 (depending onwhich of these and/or other components are also present). With theprocessor component 950 being so coupled by couplings 955, the processorcomponent 950 is able to perform the various ones of the tasks describedat length, above, for whichever one(s) of the aforedescribed computingdevices implement the processing architecture 3000. Coupling 955 may beimplemented with any of a variety of technologies or combinations oftechnologies by which signals are optically and/or electricallyconveyed. Further, at least portions of couplings 955 may employ timingsand/or protocols conforming to any of a wide variety of industrystandards, including without limitation, Accelerated Graphics Port(AGP), CardBus, Extended Industry Standard Architecture (E-ISA), MicroChannel Architecture (MCA), NuBus, Peripheral Component Interconnect(Extended) (PCI-X), PCI Express (PCI-E), Personal Computer Memory CardInternational Association (PCMCIA) bus, HyperTransport™, QuickPath, andthe like.

As previously discussed, the processor component 950 (corresponding toone or more of the processor components 150 and 350) may include any ofa wide variety of commercially available processors, employing any of awide variety of technologies and implemented with one or more coresphysically combined in any of a number of ways.

As previously discussed, the storage 960 (corresponding to one or moreof the storages 160 and 360) may be made up of one or more distinctstorage devices based on any of a wide variety of technologies orcombinations of technologies. More specifically, as depicted, thestorage 960 may include one or more of a volatile storage 961 (e.g.,solid state storage based on one or more forms of RAM technology), anon-volatile storage 962 (e.g., solid state, ferromagnetic or otherstorage not requiring a constant provision of electric power to preservetheir contents), and a removable media storage 963 (e.g., removable discor solid state memory card storage by which information may be conveyedbetween computing devices). This depiction of the storage 960 aspossibly including multiple distinct types of storage is in recognitionof the commonplace use of more than one type of storage device incomputing devices in which one type provides relatively rapid readingand writing capabilities enabling more rapid manipulation of data by theprocessor component 950 (but possibly using a “volatile” technologyconstantly requiring electric power) while another type providesrelatively high density of non-volatile storage (but likely providesrelatively slow reading and writing capabilities).

Given the often different characteristics of different storage devicesemploying different technologies, it is also commonplace for suchdifferent storage devices to be coupled to other portions of a computingdevice through different storage controllers coupled to their differingstorage devices through different interfaces. By way of example, wherethe volatile storage 961 is present and is based on RAM technology, thevolatile storage 961 may be communicatively coupled to coupling 955through a storage controller 965 a providing an appropriate interface tothe volatile storage 961 that perhaps employs row and column addressing,and where the storage controller 965 a may perform row refreshing and/orother maintenance tasks to aid in preserving information stored withinthe volatile storage 961. By way of another example, where thenon-volatile storage 962 is present and includes one or moreferromagnetic and/or solid-state disk drives, the non-volatile storage962 may be communicatively coupled to coupling 955 through a storagecontroller 965 b providing an appropriate interface to the non-volatilestorage 962 that perhaps employs addressing of blocks of informationand/or of cylinders and sectors. By way of still another example, wherethe removable media storage 963 is present and includes one or moreoptical and/or solid-state disk drives employing one or more pieces ofmachine-readable storage medium 969, the removable media storage 963 maybe communicatively coupled to coupling 955 through a storage controller965 c providing an appropriate interface to the removable media storage963 that perhaps employs addressing of blocks of information, and wherethe storage controller 965 c may coordinate read, erase and writeoperations in a manner specific to extending the lifespan of themachine-readable storage medium 969.

One or the other of the volatile storage 961 or the non-volatile storage962 may include an article of manufacture in the form of amachine-readable storage media on which a routine including a sequenceof instructions executable by the processor component 950 to implementvarious embodiments may be stored, depending on the technologies onwhich each is based. By way of example, where the non-volatile storage962 includes ferromagnetic-based disk drives (e.g., so-called “harddrives”), each such disk drive typically employs one or more rotatingplatters on which a coating of magnetically responsive particles isdeposited and magnetically oriented in various patterns to storeinformation, such as a sequence of instructions, in a manner akin tostorage medium such as a floppy diskette. By way of another example, thenon-volatile storage 962 may be made up of banks of solid-state storagedevices to store information, such as sequences of instructions, in amanner akin to a compact flash card. Again, it is commonplace to employdiffering types of storage devices in a computing device at differenttimes to store executable routines and/or data. Thus, a routineincluding a sequence of instructions to be executed by the processorcomponent 950 to implement various embodiments may initially be storedon the machine-readable storage medium 969, and the removable mediastorage 963 may be subsequently employed in copying that routine to thenon-volatile storage 962 for longer term storage not requiring thecontinuing presence of the machine-readable storage medium 969 and/orthe volatile storage 961 to enable more rapid access by the processorcomponent 950 as that routine is executed.

As previously discussed, the interface 990 (possibly corresponding toone or more of the interfaces 190 and 390) may employ any of a varietyof signaling technologies corresponding to any of a variety ofcommunications technologies that may be employed to communicativelycouple a computing device to one or more other devices. Again, one orboth of various forms of wired or wireless signaling may be employed toenable the processor component 950 to interact with input/output devices(e.g., the depicted example keyboard 920 or printer 925) and/or othercomputing devices, possibly through a network (e.g., the network 999) oran interconnected set of networks. In recognition of the often greatlydifferent character of multiple types of signaling and/or protocols thatmust often be supported by any one computing device, the interface 990is depicted as including multiple different interface controllers 995 a,995 b and 995 c. The interface controller 995 a may employ any of avariety of types of wired digital serial interface or radio frequencywireless interface to receive serially transmitted messages from userinput devices, such as the depicted keyboard 920. The interfacecontroller 995 b may employ any of a variety of cabling-based orwireless signaling, timings and/or protocols to access other computingdevices through the depicted network 999 (perhaps a network made up ofone or more links, smaller networks, or perhaps the Internet). Theinterface 995 c may employ any of a variety of electrically conductivecabling enabling the use of either serial or parallel signaltransmission to convey data to the depicted printer 925. Other examplesof devices that may be communicatively coupled through one or moreinterface controllers of the interface 990 include, without limitation,microphones, remote controls, stylus pens, card readers, finger printreaders, virtual reality interaction gloves, graphical input tablets,joysticks, other keyboards, retina scanners, the touch input componentof touch screens, trackballs, various sensors, a camera or camera arrayto monitor movement of persons to accept commands and/or data signaledby those persons via gestures and/or facial expressions, laser printers,inkjet printers, mechanical robots, milling machines, etc.

Where a computing device is communicatively coupled to (or perhaps,actually incorporates) a display (e.g., the depicted example display980, corresponding to one or more of the displays 180 and 380), such acomputing device implementing the processing architecture 3000 may alsoinclude the display interface 985. Although more generalized types ofinterface may be employed in communicatively coupling to a display, thesomewhat specialized additional processing often required in visuallydisplaying various forms of content on a display, as well as thesomewhat specialized nature of the cabling-based interfaces used, oftenmakes the provision of a distinct display interface desirable. Wiredand/or wireless signaling technologies that may be employed by thedisplay interface 985 in a communicative coupling of the display 980 maymake use of signaling and/or protocols that conform to any of a varietyof industry standards, including without limitation, any of a variety ofanalog video interfaces, Digital Video Interface (DVI), DisplayPort,etc.

More generally, the various elements of the computing devices describedand depicted herein may include various hardware elements, softwareelements, or a combination of both. Examples of hardware elements mayinclude devices, logic devices, components, processors, microprocessors,circuits, processor components, circuit elements (e.g., transistors,resistors, capacitors, inductors, and so forth), integrated circuits,application specific integrated circuits (ASIC), programmable logicdevices (PLD), digital signal processors (DSP), field programmable gatearray (FPGA), memory units, logic gates, registers, semiconductordevice, chips, microchips, chip sets, and so forth. Examples of softwareelements may include software components, programs, applications,computer programs, application programs, system programs, softwaredevelopment programs, machine programs, operating system software,middleware, firmware, software modules, routines, subroutines,functions, methods, procedures, software interfaces, application programinterfaces (API), instruction sets, computing code, computer code, codesegments, computer code segments, words, values, symbols, or anycombination thereof. However, determining whether an embodiment isimplemented using hardware elements and/or software elements may vary inaccordance with any number of factors, such as desired computationalrate, power levels, heat tolerances, processing cycle budget, input datarates, output data rates, memory resources, data bus speeds and otherdesign or performance constraints, as desired for a givenimplementation.

Some embodiments may be described using the expression “one embodiment”or “an embodiment” along with their derivatives. These terms mean that aparticular feature, structure, or characteristic described in connectionwith the embodiment is included in at least one embodiment. Theappearances of the phrase “in one embodiment” in various places in thespecification are not necessarily all referring to the same embodiment.Further, some embodiments may be described using the expression“coupled” and “connected” along with their derivatives. These terms arenot necessarily intended as synonyms for each other. For example, someembodiments may be described using the terms “connected” and/or“coupled” to indicate that two or more elements are in direct physicalor electrical contact with each other. The term “coupled,” however, mayalso mean that two or more elements are not in direct contact with eachother, but yet still co-operate or interact with each other.Furthermore, aspects or elements from different embodiments may becombined.

It is emphasized that the Abstract of the Disclosure is provided toallow a reader to quickly ascertain the nature of the technicaldisclosure. It is submitted with the understanding that it will not beused to interpret or limit the scope or meaning of the claims. Inaddition, in the foregoing Detailed Description, it can be seen thatvarious features are grouped together in a single embodiment for thepurpose of streamlining the disclosure. This method of disclosure is notto be interpreted as reflecting an intention that the claimedembodiments require more features than are expressly recited in eachclaim. Rather, as the following claims reflect, inventive subject matterlies in less than all features of a single disclosed embodiment. Thusthe following claims are hereby incorporated into the DetailedDescription, with each claim standing on its own as a separateembodiment. In the appended claims, the terms “including” and “in which”are used as the plain-English equivalents of the respective terms“comprising” and “wherein,” respectively. Moreover, the terms “first,”“second,” “third,” and so forth, are used merely as labels, and are notintended to impose numerical requirements on their objects.

What has been described above includes examples of the disclosedarchitecture. It is, of course, not possible to describe everyconceivable combination of components and/or methodologies, but one ofordinary skill in the art may recognize that many further combinationsand permutations are possible. Accordingly, the novel architecture isintended to embrace all such alterations, modifications and variationsthat fall within the spirit and scope of the appended claims. Thedetailed disclosure now turns to providing examples that pertain tofurther embodiments. The examples provided below are not intended to belimiting.

An example of an apparatus to merge maps includes a processor component;and a merged map generator for execution by the processor component tomerge a virtual map and a physical map to generate a merged map, thevirtual map comprising indications of virtual pathways through aninterior of a structure based on sensors, and the physical mapcomprising indications of physical pathways of the interior.

The above example of an apparatus in which the apparatus includes anerror calculator for execution by the processor component, the mergedmap generator to repeatedly manipulate the virtual map relative to apathway map and the error calculator to determine a degree of errorrepresenting a sum of differences of locations between features of thevirtual map and features of the pathway map for each manipulation of thevirtual map, the pathway map indicating locations of the physicalpathways.

Either of the above examples of an apparatus in which the apparatusincludes a display communicatively coupled to the processor component;and an anchoring component for execution by the processor component tovisually present a request for an indication of an anchor point at whichthe virtual map and the physical map coincide on the display, and tocorrelate a location of the anchor point on the physical map to alocation on the pathway map.

Any of the above examples of an apparatus in which the apparatusincludes a rotation component for execution by the processor componentto rotate the virtual map relative to the pathway map about the anchorpoint to multiple orientations, the error calculator to determine adegree of error for each orientation of the multiple orientations todetermine which orientation of the multiple orientations provides a bestalignment between the virtual map and the pathway map.

Any of the above examples of an apparatus in which the apparatusincludes a scaling component for execution by the processor component toscale the virtual map to multiple sizes relative to the pathway mapwhile maintaining the anchor point, the error calculator to determine adegree of error for each size of the multiple sizes to determine whichsize of the multiple sizes provides a best alignment between the virtualmap and the pathway map.

Any of the above examples of an apparatus in which the features of thevirtual map include points at which two or more segments of a virtualpathway meet, and the features of the pathway map include points atwhich two or more segments of a physical pathway meet.

Any of the above examples of an apparatus in which the apparatusincludes a pathway extractor for execution by the processor component togenerate a pathway map comprising indications of locations of thephysical pathways from the physical map.

Any of the above examples of an apparatus in which the merged mapgenerator is to repeatedly manipulate the virtual map relative to thepathway map in a first stage in coarser increments to determine a bestalignment of the virtual map with the pathway map and in a second stagein finer increments to determine a still better alignment of the virtualmap with the pathway map.

Any of the above examples of an apparatus in which the apparatusincludes a rotation component for execution by the processor componentto rotate the virtual map relative to the pathway map in the first stagein increments of a first selected quantity of degrees of rotation and inthe second stage in increments of a second selected quantity of degreesof rotation, the first selected quantity greater than the second.

Any of the above examples of an apparatus in which the apparatusincludes a scaling component for execution by the processor component toscale the virtual map relative to the pathway map in the first stage inincrements of a first selected percentage of size of the virtual map andin the second stage in increments of a second selected percentage ofsize of the virtual map, the first selected percentage greater than thesecond.

Any of the above examples of an apparatus in which the merged mapgenerator is to correlate an alignment of the virtual map with thepathway map to an alignment of the virtual map with the physical map.

Any of the above examples of an apparatus in which the apparatusincludes an interface communicatively coupled to the processor componentto transmit the merged map to at least one of the computing devices.

An example of another apparatus to merge maps includes a processorcomponent; and a merged map generator for execution by the processorcomponent to align segments of virtual pathways of a virtual map withsegments of physical pathways of a pathway map, the virtual pathwayscomprising pathways of an interior of a structure based on sensors, andthe physical pathways comprising pathways enabling physical movementthrough the interior.

The above example of another apparatus in which the apparatus includes apathway extractor for execution by the processor component to extractindications of the physical pathways from a physical map of at least aportion of the structure to generate the pathway map.

Either of the above examples of another apparatus in which the mergedmap generator is to correlate an alignment of the virtual pathways withthe physical pathways to an alignment of the virtual map to the physicalmap, and to merge the virtual map and the physical map to generate amerged map.

Any of the above examples of another apparatus in which the merged mapgenerator is to repeatedly manipulate the virtual map relative to thepathway map in a first stage in coarser increments to determine a bestalignment of the virtual pathways with the physical pathways and in asecond stage in finer increments to determine a still better alignmentof the virtual pathways with the physical pathways.

Any of the above examples of another apparatus in which the apparatusincludes a rotation component for execution by the processor componentto rotate the virtual map relative to the pathway map in the first stagein increments of a first selected quantity of degrees of rotation and inthe second stage in increments of a second selected quantity of degreesof rotation, the first selected quantity greater than the second.

Any of the above examples of another apparatus in which the apparatusincludes a scaling component for execution by the processor component toscale the virtual map relative to the pathway map in the first stage inincrements of a first selected percentage of size of the virtual map andin the second stage in increments of a second selected percentage ofsize of the virtual map, the first selected percentage greater than thesecond.

Any of the above examples of another apparatus in which the apparatusincludes an error calculator for execution by the processor component todetermine a degree of error representing a sum of differences oflocations between features of the virtual map and features of thepathway map for each manipulation of the virtual map.

Any of the above examples of another apparatus in which the features ofthe virtual map include points at which two or more segments of avirtual pathway meet, and the features of the pathway map include pointsat which two or more segments of a physical pathway meet.

An example of a computer-implemented method for merging maps includesgenerating a virtual map comprising indications of virtual pathwaysthrough an interior of a structure based on sensors, and merging thevirtual map and a physical map comprising indications of physicalpathways of the interior to generate a merged map.

The above example of a computer-implemented method in which the methodincludes generating a pathway map from the indications of the physicalpathways of the physical map, repeatedly manipulating the virtual maprelative to the pathway map, and determining a degree of errorrepresenting a sum of differences of locations between features of thevirtual map and features of the pathway map for each manipulation of thevirtual map.

Either of the above examples of a computer-implemented method in whichthe method includes visually presenting the physical map, the virtualmap and a request for an indication of an anchor point at which thevirtual map and the physical map coincide on a display, and correlatinga location of the anchor point on the physical map to a location on thepathway map.

Any of the above examples of a computer-implemented method in which themethod includes rotating the virtual map relative to the pathway mapabout the anchor point to multiple orientations, and determining whichorientation of the multiple orientations provides a best alignmentbetween the virtual map and the pathway map.

Any of the above examples of a computer-implemented method in which themethod includes scaling the virtual map to multiple sizes relative tothe pathway map while maintaining the anchor point, and determiningwhich size of the multiple sizes provides a best alignment between thevirtual map and the pathway map.

Any of the above examples of a computer-implemented method in which thefeatures of the virtual map include points at which two or more segmentsof a virtual pathway meet, and the features of the pathway map includepoints at which two or more segments of a physical pathway meet.

Any of the above examples of a computer-implemented method in which themethod includes repeatedly manipulating the virtual map relative to thepathway map in a first stage in coarser increments to determine a bestalignment of the virtual map with the pathway map, and repeatedlymanipulating the virtual map relative to the pathway map in a secondstage in finer increments to determine a still better alignment of thevirtual map with the pathway map.

Any of the above examples of a computer-implemented method in which themethod includes rotating the virtual map relative to the pathway map inthe first stage in increments of a first selected quantity of degrees ofrotation, and rotating the virtual map relative to the pathway map inthe second stage in increments of a second selected quantity of degreesof rotation, the first selected quantity greater than the second.

Any of the above examples of a computer-implemented method in which themethod includes scaling the virtual map relative to the pathway map inthe first stage in increments of a first selected percentage of size ofthe virtual map, and scaling the virtual map relative to the pathway mapin the second stage in increments of a second selected percentage ofsize of the virtual map, the first selected percentage greater than thesecond.

Any of the above examples of a computer-implemented method in which themethod includes correlating an alignment of the virtual map with thepathway map to an alignment of the virtual map with the physical map,and transmitting the merged map to at least one of the computingdevices.

An example of an apparatus for merging maps includes means forperforming any of the embodiments described herein of acomputer-implemented method.

An example of at least one machine readable storage medium includesinstructions that when executed by a computing device, causes thecomputing device to perform any of the embodiments described herein of acomputer-implemented method.

An example of at least one machine-readable storage medium includesinstructions that when executed by a computing device, cause thecomputing device to generate a virtual map comprising indications ofvirtual pathways through an interior of a structure based on sensors,and merge the virtual map and a physical map comprising indications ofphysical pathways of the interior to generate a merged map.

The above example of at least one machine-readable storage medium inwhich the computing device is caused to generate a pathway map from theindications of the physical pathways of the physical map, repeatedlymanipulate the virtual map relative to the pathway map, and determine adegree of error representing a sum of differences of locations betweenfeatures of the virtual map and features of the pathway map for eachmanipulation of the virtual map.

Either of the above examples of at least one machine-readable storagemedium in which the computing device is caused to visually present thephysical map, the virtual map and a request for an indication of ananchor point at which the virtual map and the physical map coincide on adisplay of the computing device, and correlate a location of the anchorpoint on the physical map to a location on the pathway map.

Any of the above examples of at least one machine-readable storagemedium in which the computing device is caused to rotate the virtual maprelative to the pathway map about the anchor point to multipleorientations, and determine which orientation of the multipleorientations provides a best alignment between the virtual map and thepathway map.

Any of the above examples of at least one machine-readable storagemedium in which the computing device is caused to scale the virtual mapto multiple sizes relative to the pathway map while maintaining theanchor point, and determine which size of the multiple sizes provides abest alignment between the virtual map and the pathway map.

Any of the above examples of at least one machine-readable storagemedium in which the features of the virtual map include points at whichtwo or more segments of a virtual pathway meet, and the features of thepathway map include points at which two or more segments of a physicalpathway meet.

Any of the above examples of at least one machine-readable storagemedium in which the computing device is caused to repeatedly manipulatethe virtual map relative to the pathway map in a first stage in coarserincrements to determine a best alignment of the virtual map with thepathway map, and repeatedly manipulate the virtual map relative to thepathway map in a second stage in finer increments to determine a stillbetter alignment of the virtual map with the pathway map.

1-25. (canceled)
 26. An apparatus comprising: a processor component; anda merged map generator for execution by the processor component to mergea virtual map and a physical map to generate a merged map, the virtualmap comprising indications of virtual pathways through an interior of astructure based on sensors, and the physical map comprising indicationsof physical pathways of the interior.
 27. The apparatus of claim 26,comprising an error calculator for execution by the processor component,the merged map generator to repeatedly manipulate the virtual maprelative to a pathway map and the error calculator to determine a degreeof error representing a sum of differences of locations between featuresof the virtual map and features of the pathway map for each manipulationof the virtual map, the pathway map indicating locations of the physicalpathways.
 28. The apparatus of claim 27, comprising: a displaycommunicatively coupled to the processor component; and an anchoringcomponent for execution by the processor component to visually present arequest for an indication of an anchor point at which the virtual mapand the physical map coincide on the display, and to correlate alocation of the anchor point on the physical map to a location on thepathway map.
 29. The apparatus of claim 28, comprising a scalingcomponent for execution by the processor component to scale the virtualmap to multiple sizes relative to the pathway map while maintaining theanchor point, the error calculator to determine a degree of error foreach size of the multiple sizes to determine which size of the multiplesizes provides a best alignment between the virtual map and the pathwaymap.
 30. The apparatus of claim 27, the features of the virtual mapcomprising points at which two or more segments of a virtual pathwaymeet, and the features of the pathway map comprising points at which twoor more segments of a physical pathway meet.
 31. The apparatus of claim26, comprising a pathway extractor for execution by the processorcomponent to generate a pathway map comprising indications of locationsof the physical pathways from the physical map.
 32. The apparatus ofclaim 31, the merged map generator to repeatedly manipulate the virtualmap relative to the pathway map in a first stage in coarser incrementsto determine a best alignment of the virtual map with the pathway mapand in a second stage in finer increments to determine a still betteralignment of the virtual map with the pathway map.
 33. The apparatus ofclaim 32, comprising a rotation component for execution by the processorcomponent to rotate the virtual map relative to the pathway map in thefirst stage in increments of a first selected quantity of degrees ofrotation and in the second stage in increments of a second selectedquantity of degrees of rotation, the first selected quantity greaterthan the second.
 34. The apparatus of claim 26, comprising an interfacecommunicatively coupled to the processor component to transmit themerged map to at least one of the computing devices.
 35. An apparatuscomprising: a processor component; and a merged map generator forexecution by the processor component to align segments of virtualpathways of a virtual map with segments of physical pathways of apathway map, the virtual pathways comprising pathways of an interior ofa structure based on sensors, and the physical pathways comprisingpathways enabling physical movement through the interior.
 36. Theapparatus of claim 35, comprising a pathway extractor for execution bythe processor component to extract indications of the physical pathwaysfrom a physical map of at least a portion of the structure to generatethe pathway map.
 37. The apparatus of claim 36, the merged map generatorto correlate an alignment of the virtual pathways with the physicalpathways to an alignment of the virtual map to the physical map, and tomerge the virtual map and the physical map to generate a merged map. 38.The apparatus of claim 35, the merged map generator to repeatedlymanipulate the virtual map relative to the pathway map in a first stagein coarser increments to determine a best alignment of the virtualpathways with the physical pathways and in a second stage in finerincrements to determine a still better alignment of the virtual pathwayswith the physical pathways.
 39. The apparatus of claim 38, comprising arotation component for execution by the processor component to rotatethe virtual map relative to the pathway map in the first stage inincrements of a first selected quantity of degrees of rotation and inthe second stage in increments of a second selected quantity of degreesof rotation, the first selected quantity greater than the second.
 40. Acomputing-implemented method comprising: generating a virtual mapcomprising indications of virtual pathways through an interior of astructure based on sensors; and merging the virtual map and a physicalmap comprising indications of physical pathways of the interior togenerate a merged map.
 41. The computer-implemented method of claim 40,comprising: generating a pathway map from the indications of thephysical pathways of the physical map; repeatedly manipulating thevirtual map relative to the pathway map; and determining a degree oferror representing a sum of differences of locations between features ofthe virtual map and features of the pathway map for each manipulation ofthe virtual map.
 42. The computer-implemented method of claim 41,comprising: visually presenting the physical map, the virtual map and arequest for an indication of an anchor point at which the virtual mapand the physical map coincide on a display; and correlating a locationof the anchor point on the physical map to a location on the pathwaymap.
 43. The computer-implemented method of claim 42, comprising:rotating the virtual map relative to the pathway map about the anchorpoint to multiple orientations, and determining which orientation of themultiple orientations provides a best alignment between the virtual mapand the pathway map.
 44. The computer-implemented method of claim 41,comprising: repeatedly manipulating the virtual map relative to thepathway map in a first stage in coarser increments to determine a bestalignment of the virtual map with the pathway map; and repeatedlymanipulating the virtual map relative to the pathway map in a secondstage in finer increments to determine a still better alignment of thevirtual map with the pathway map.
 45. The computer-implemented method ofclaim 44, comprising: scaling the virtual map relative to the pathwaymap in the first stage in increments of a first selected percentage ofsize of the virtual map; and scaling the virtual map relative to thepathway map in the second stage in increments of a second selectedpercentage of size of the virtual map, the first selected percentagegreater than the second.
 46. The computer-implemented method of claim41, comprising: correlating an alignment of the virtual map with thepathway map to an alignment of the virtual map with the physical map;and transmitting the merged map to at least one of the computingdevices.
 47. At least one machine-readable storage medium comprisinginstructions that when executed by a computing device, cause thecomputing device to: generate a virtual map comprising indications ofvirtual pathways through an interior of a structure based on sensors;and merge the virtual map and a physical map comprising indications ofphysical pathways of the interior to generate a merged map.
 48. The atleast one machine-readable storage medium of claim 47, the computingdevice caused to: generate a pathway map from the indications of thephysical pathways of the physical map; repeatedly manipulate the virtualmap relative to the pathway map; and determine a degree of errorrepresenting a sum of differences of locations between features of thevirtual map and features of the pathway map for each manipulation of thevirtual map.
 49. The at least one machine-readable storage medium ofclaim 48, the computing device caused to: visually present the physicalmap, the virtual map and a request for an indication of an anchor pointat which the virtual map and the physical map coincide on a display ofthe computing device; and correlate a location of the anchor point onthe physical map to a location on the pathway map.
 50. The at least onemachine-readable storage medium of claim 48, the computing device causedto: repeatedly manipulate the virtual map relative to the pathway map ina first stage in coarser increments to determine a best alignment of thevirtual map with the pathway map; and repeatedly manipulate the virtualmap relative to the pathway map in a second stage in finer increments todetermine a still better alignment of the virtual map with the pathwaymap.